package com.droid.gastos.connector;

import java.util.ArrayList;

import com.droid.persistor.dao.Categoria;
import com.droid.persistor.dao.Gasto;
import com.droid.persistor.dao.Recordatorio;
import com.droid.persistor.dao.Tipo_Gasto;
import com.droid.persistor.dao.Usuario;
import com.droid.persistor.facade.PersistorFacade;

public class GastoConnector {

	public Usuario getUsuarioFromDB(String usuEmail) {
		PersistorFacade pFacade= new PersistorFacade();
		Usuario resp=pFacade.obtenerUsuario(usuEmail);
		return resp;
		
	}
	
	public String updateProgGasto(String nombregasto,
			String perioricidad, String fecha, String nombrecategoria,
			String monto, String mail, Number idGasto, String fechaprog,
			String msgprogramado) {

		String msg = null;

		PersistorFacade facade = new PersistorFacade();
		Gasto gto = facade.getGasto(idGasto);

		if (gto.getIdgasto() != null) {

			Gasto newgto = new Gasto();
			Tipo_Gasto tgo = facade.getTipo_Gasto(nombregasto);
			Categoria ctg = facade.getCategoria(nombrecategoria);
			Recordatorio reco = facade.getRecordatorioGasto(gto.getIdgasto());

			newgto.setCategoria(ctg.getIdCategoria());
			newgto.setFecha(fecha);
			newgto.setIdgasto(gto.getIdgasto());
			newgto.setMonto(monto);
			newgto.setPerioricidad(perioricidad);
			newgto.setTipo_Gasto(tgo.getIdTipo_Gasto());

			facade.updateGasto(newgto);

			reco.setMensaje(msgprogramado);
			reco.setNombre(tgo.getNombre());
			reco.setFecha(fechaprog);

			facade.updateRecordatorio(reco);

			msg = "Categoria: " + newgto.getCategoria() + " Tipo_Gasto: "
					+ newgto.getTipo_Gasto() + " Idusuario: "
					+ gto.getIdUsuario() + " Fecha: " + newgto.getFecha()
					+ " Perioricidad: " + newgto.getPerioricidad() + " Monto: "
					+ newgto.getMonto();
		} else {
			msg = "No existe el usuario";
		}

		return msg;

	}
	
	public String bajaGasto(Number idGasto) {

		String msg = null;

		PersistorFacade facade = new PersistorFacade();
		Gasto gto = facade.getGasto(idGasto);

		if (gto.getIdgasto() != null) {

			facade.deleteGasto(gto.getIdgasto());

			msg = "Gasto borrado " + "Categoria: " + gto.getCategoria()
					+ " Tipo_Gasto: " + gto.getTipo_Gasto() + " Idusuario: "
					+ gto.getIdUsuario() + " Fecha: " + gto.getFecha()
					+ " Perioricidad: " + gto.getPerioricidad() + " Monto: "
					+ gto.getMonto();
			
			Recordatorio reco = facade.getRecordatorioGasto(idGasto);

			if (reco != null) {
				facade.deleteRecordatorio(reco.getIdRecordatorio());
				msg = msg + " Recordatorio asociado borraro"
						+ reco.getIdRecordatorio();
			}

		} else {
			msg = "Gasto inexistente";
		}
		return msg;

	}
	
	public String updateManualGasto(String nombregasto,
			String perioricidad, String fecha, String nombrecategoria,
			String monto, String mail, Number idGasto) {
		String msg = null;

		PersistorFacade facade = new PersistorFacade();
		Gasto gto = facade.getGasto(idGasto);

		if (gto.getIdgasto() != null) {

			Gasto newgto = new Gasto();
			Tipo_Gasto tgo = facade.getTipo_Gasto(nombregasto);
			Categoria ctg = facade.getCategoria(nombrecategoria);

			newgto.setCategoria(ctg.getIdCategoria());
			newgto.setFecha(fecha);
			newgto.setIdgasto(gto.getIdgasto());
			newgto.setMonto(monto);
			newgto.setPerioricidad(perioricidad);
			newgto.setTipo_Gasto(tgo.getIdTipo_Gasto());

			facade.updateGasto(newgto);

			msg = "Categoria: " + newgto.getCategoria() + " Tipo_Gasto: "
					+ newgto.getTipo_Gasto() + " Idusuario: "
					+ gto.getIdUsuario() + " Fecha: " + newgto.getFecha()
					+ " Perioricidad: " + newgto.getPerioricidad() + " Monto: "
					+ newgto.getMonto();
		} else {
			msg = "No existe el usuario";
		}

		return msg;

		}
	
	public String altaManualGasto(String nombregasto, String perioricidad,
			String fechaalta, String nombrecategoria, String monto, String mail) {
		Gasto gto = new Gasto();
		// Categoria ctg= new Categoria();
		String msg = null;

		PersistorFacade facade = new PersistorFacade();
		Tipo_Gasto tgo = facade.getTipo_Gasto(nombregasto);
		Categoria ctg = facade.getCategoria(nombrecategoria);
		Usuario usu = facade.obtenerUsuario(mail);

		gto.setCategoria(ctg.getIdCategoria());
		gto.setTipo_Gasto(tgo.getIdTipo_Gasto());
		gto.setIdUsuario(usu.getIdUsuario());
		gto.setFecha(fechaalta);
		gto.setPerioricidad(perioricidad);
		gto.setMonto(monto);

		facade.altaGasto(gto);
		
		return msg;
		
	}

	public String altaProgGasto(String nombregasto,
			String perioricidad, String fechaalta, String nombrecategoria,
			String monto, String mail, String fechaprog, String msgprogramado) {
		Gasto gto = new Gasto();
		// Categoria ctg= new Categoria();
		String msg = null;

		PersistorFacade facade = new PersistorFacade();
		Tipo_Gasto tgo = facade.getTipo_Gasto(nombregasto);
		Categoria ctg = facade.getCategoria(nombrecategoria);
		Usuario usu = facade.obtenerUsuario(mail);

		gto.setCategoria(ctg.getIdCategoria());
		gto.setTipo_Gasto(tgo.getIdTipo_Gasto());
		gto.setIdUsuario(usu.getIdUsuario());
		gto.setFecha(fechaalta);
		gto.setPerioricidad(perioricidad);
		gto.setMonto(monto);

		facade.altaGasto(gto);

		Recordatorio reco = new Recordatorio();

		reco.setFecha(fechaprog);
		reco.setIdGasto(gto.getIdgasto());
		reco.setMensaje(msgprogramado);
		reco.setNombre(tgo.getNombre());
		reco.setIdUsuario(gto.getIdUsuario());

		facade.altaRecordatorio(reco);

		msg = "Alta gasto programada--> " + "Categoria: " + gto.getCategoria()
				+ " Tipo_Gasto: " + gto.getTipo_Gasto() + " Idusuario: "
				+ gto.getIdUsuario() + " FechaAlta: " + gto.getFecha()
				+ " Perioricidad: " + gto.getPerioricidad() + " Monto: "
				+ gto.getMonto() + " FechaProgramada " + reco.getFecha();

		return msg;
		
	}

	
	public ArrayList<Gasto> getGastoFromDB(String usuEmail) {
		PersistorFacade pFacade= new PersistorFacade();
		ArrayList<Gasto> resp=pFacade.obtenerUsuarioGastos(usuEmail);
		return resp;
		
	}

	public String recupassUsuario(String usuEmail) {
		// TODO Auto-generated method stub
		
		PersistorFacade pFacade= new PersistorFacade();
		String resp=pFacade.obtenerPasswordUsuario(usuEmail);
		
		return resp;

	}

	public String desactivarUsuario(String usuEmail) {
		// TODO Auto-generated method stub
		
		PersistorFacade pFacade= new PersistorFacade();
		String resp=pFacade.desactivarUsuario(usuEmail);
		
		return resp;

	}
	
	public String activarUsuario(String usuEmail) {
		// TODO Auto-generated method stub
		
		PersistorFacade pFacade= new PersistorFacade();
		String resp=pFacade.activarUsuario(usuEmail);
		
		return resp;

	}
	
}
